package com.bci.pwtz.common.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;


/**
 * 文件操作工具包
 * 
 * @author jiangchangshan
 * @version V1.0 创建时间：2014-8-30 上午9:33:48
 */
public class FileUtils {
    
    public static boolean ftpUpload(String host, String port, String username,
            String password, String remotePath, String fileNamePath,
            String fileName) {
        Boolean result = false;
//        FtpUseBean ftpUserBean = new FtpUseBean();
//        ftpUserBean.setHost(host);
//        ftpUserBean.setPort(Integer.valueOf(port));
//        ftpUserBean.setUserName(username);
//        ftpUserBean.setPassword(password);
//        ftpUserBean.setFtpPath(remotePath);
//        FtpUtil ftp = new FtpUtil();
//        ftp.setFtpUseBean(ftpUserBean);
//        result = ftp.ftpLogin();
//        if(result){
//            result=false;
//            try
//            {
//                ftp.setFtpToUtf8();
//                File file=new File(fileNamePath+fileName);
//                if(file.exists()){
//                    FileInputStream is=new FileInputStream(file);
//                    ftp.uploadFileToFtpByIS(is, fileName);
//                    ftp.close();
//                    result=true;
//                }
//            }
//            catch (IOException e)
//            {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//            }
//        }
        result=copyFile(fileNamePath+fileName,remotePath,remotePath+fileName);
        return result;
    }

    /**
     * Description: 从FTP服务器下载文件
     * 
     * @param url
     *            FTP服务器hostname
     * @param port
     *            FTP服务器端口
     * @param username
     *            FTP登录账号
     * @param password
     *            FTP登录密码
     * @param remotePath
     *            FTP服务器上的相对路径
     * @param fileName
     *            要下载的文件名
     * @param localPath
     *            下载后保存到本地的路径
     * @return
     */
    public static boolean ftpDownload(String host, int port, String username,
            String password, String remotePath, String fileName,
            String localPath) {
        boolean result=false;
//        FtpUseBean ftpUserBean = new FtpUseBean();
//        ftpUserBean.setHost(host);
//        ftpUserBean.setPort(Integer.valueOf(port));
//        ftpUserBean.setUserName(username);
//        ftpUserBean.setPassword(password);
//        ftpUserBean.setFtpPath(remotePath);
//        FtpUtil ftp = new FtpUtil();
//        ftp.setFtpUseBean(ftpUserBean);
//        result = ftp.ftpLogin();
//        if(result){
//            result=false;
//            try
//            {
//                ftp.setFtpToUtf8();
//                File file=new File(localPath);
//                if(!file.exists()){
//                  file.mkdirs();  
//                }
//                result=ftp.downFtpFile(fileName, localPath+fileName);
//            }
//            catch (IOException e)
//            {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//            }
//        } 
        String newFileName=fileName.substring(fileName.indexOf("_")+1);
//        result=copyFile("E:/"+remotePath+fileName,localPath,localPath+newFileName);
        result=copyFile(remotePath+fileName,localPath,localPath+newFileName);
        return true;
    }
    
    /** 
     * 复制单个文件 
     * @param oldFile String 原文件路径 如：c:/fqf.txt 
     * @param newFile String 复制后路径 如：f:/fqf.txt 
     * @return boolean 
     */ 
   public static boolean copyFile(String oldFile, String newPath,String newFile) { 
       boolean result=false;
       try { 
           int bytesum = 0; 
           int byteread = 0; 
           File oldfile = new File(oldFile); 
           if (oldfile.exists()) { //文件存在时 
               File newfile=new File(newPath);
               if(!newfile.exists()){
                   newfile.mkdirs();
               }
               InputStream inStream = new FileInputStream(oldFile); //读入原文件 
               FileOutputStream fs = new FileOutputStream(newFile); 
               byte[] buffer = new byte[1444]; 
               int length; 
               while ( (byteread = inStream.read(buffer)) != -1) { 
                   bytesum += byteread; //字节数 文件大小 
                   System.out.println(bytesum); 
                   fs.write(buffer, 0, byteread); 
               } 
               inStream.close();
               result=true;
           } 
       } 
       catch (Exception e) { 
           System.out.println("复制单个文件操作出错"); 
           e.printStackTrace(); 

       } 
       return result;
   } 

   /**
    * 单位转换
    * @param fileS
    * @return
    */
   public static String formatFileSize(long fileS) {
		java.text.DecimalFormat df = new java.text.DecimalFormat("0.00");
		String fileSizeString = "";
		if (fileS < 1024) {
			fileSizeString = df.format((double) fileS) + "B";
		} else if (fileS < 1048576) {
			fileSizeString = df.format((double) fileS / 1024) + "KB";
		} else if (fileS < 1073741824) {
			fileSizeString = df.format((double) fileS / 1048576) + "MB";
		} else {
			fileSizeString = df.format((double) fileS / 1073741824) + "G";
		}
		return fileSizeString;
	}
}
